package com.payment.entity.po;

import java.math.BigDecimal;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import org.springframework.format.annotation.DateTimeFormat;

/**
 * <p>
 * 
 * </p>
 *
 * @author 窦绍飞
 * @since 2021-06-03
 */
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@AllArgsConstructor
@NoArgsConstructor
public class PayOrder extends Model {

    private static final long serialVersionUID = 1L;

    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;

    /**
     * 商户系统订单号
     */
    private String outTradeNo;

    /**
     * 订单金额
     */
    private BigDecimal totalAmount;

    /**
     * 商店编号
     */
    private String storeId;

    /**
     * 支付类型（1：支付宝，2：微信）
     */
    private Integer payType;

    /**
     * 支付标题内容
     */
    private String subject;

    /**
     * 付款码支付用户付款码
     */
    private String authCode;

    /**
     * 数据创建时间
     */
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") //前台传数据到后台
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")// 后台传数据到前台
    private LocalDateTime createTime;

    /**
     * 数据修改时间
     */
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") //前台传数据到后台
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")// 后台传数据到前台
    private LocalDateTime updateTime;

    /**
     * 服务方订单号（例如：微信、支付宝）
     */
    private String serviceOutTradeNo;

    /**
     * 收款支付宝账号对应的支付宝唯一用户号。
     */
    private String sellerId;

    /**
     * 商户原始订单号，最大长度限制32位
     */
    private String merchantOrderNo;

    /**
     * 支付宝方业务错误提示
     */
    private String subMessage;

    /**
     * 支付宝方业务错误码
     */
    private String subCode;

    /**
     * 支付宝方网关错误码提示
     */
    private String code;

    /**
     * 支付宝方网关提示
     */
    private String message;

    /**
     * 异步通知时间
     */
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") //前台传数据到后台
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")// 后台传数据到前台
    private LocalDateTime notifyTime;

    /**
     * 支付宝交易号。支付宝交易凭证号。
     */
    private String tradeNo;

    /**
     * 开发者的 app_id。支付宝分配给开发者的应用 APPID。
     */
    private String appId;

    /**
     * 商户业务号。商户业务 ID，主要是退款通知中返回退款申请的流水号。
     */
    private String outBizNo;

    /**
     * 买家支付宝用户号。买家支付宝账号对应的支付宝唯一用户号。
     */
    private String buyerId;

    /**
     * 交易状态。交易目前所处的状态。
     */
    private String tradeStatus;

    /**
     * 实收金额。商户在交易中实际收到的款项，单位为人民币（元）。
     */
    private BigDecimal receiptAmount;

    /**
     * 交易创建时间。该笔交易创建的时间。格式为 yyyy-MM-dd HH:mm:ss。
     */
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") //前台传数据到后台
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")// 后台传数据到前台
    private LocalDateTime gmtCreate;

    /**
     * 交易付款时间。该笔交易的买家付款时间。格式为 yyyy-MM-dd HH:mm:ss。
     */
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") //前台传数据到后台
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")// 后台传数据到前台
    private LocalDateTime gmtPayment;

    /**
     * 交易退款时间。该笔交易的退款时间。格式为 yyyy-MM-dd HH:mm:ss.S。
     */
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") //前台传数据到后台
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")// 后台传数据到前台
    private LocalDateTime gmtRefund;

    /**
     * 交易结束时间。该笔交易结束时间。格式为 yyyy-MM-dd HH:mm:ss。
     */
	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") //前台传数据到后台
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")// 后台传数据到前台
    private LocalDateTime gmtClose;

    /**
     * 支付金额信息。支付成功的各个渠道金额信息，详见下表 资金明细信息说明。
     */
    private String fundBillList;
	/**
	 * 支付状态
	 */
	private Integer payStatus;
	/**
	 *支付有效时间
	 */
	private String timeoutExpress;
	/**
	 * 支付方式
	 * 	1：付款码支付
	 */
	private Integer	paymentMethod;

}
